/* 
 * File:   newsimpletest.cpp
 * Author: max
 *
 * Created on Nov 18, 2012, 3:46:20 PM
 */

#include <stdlib.h>
#include <iostream>
#include "PajaritoAzul.h"
#include "HuevoBlanco.h"
#include "HuevoPoche.h"
#include "HuevoCodorniz.h"
#include "HuevoReloj.h"
#include "Trayectoria.h"
#include "Cerdito.h"
#include "Catapulta.h"
#include "MonticuloHuevos.h"
#include "CajaVidrio.h"
#include "CajaMadera.h"
#include "CajaMetal.h"
#include "Manzana.h"
#include "Banana.h"
#include "Cereza.h"
#include "Perimetro.h"
#include "Escenario.h"
#include "Partida.h"
#include "Nivel.h"
#include "Mundo.h"

/*
 * Simple C++ Test Suite
 */
using namespace TP::Juego;
using namespace TP::Juego::Arena;
using namespace TP::Juego::Arena::Actores;
using namespace TP::Juego::Motorizacion::Fisica;
using namespace TP::Juego::Arena::Utilidades;

void test1() {
	std::cout << "newsimpletest test 1" << std::endl;

	Posicion* posicion = new Posicion (10, 10);
	Vector2D *velocidad = new Vector2D (20, 20);
	Vector2D *aceleracion = new Vector2D (30, 30);

	PajaritoAzul *pajarito = new PajaritoAzul("Tweety");
	pajarito->setTrayectoria(new Trayectoria (posicion, velocidad, aceleracion));

	cout << pajarito->aXML();
        
        delete pajarito;

}

void test2() {
	std::cout << "newsimpletest test 2" << std::endl;

	Posicion *posicion = new Posicion (10, 10);
	Vector2D *velocidad = new Vector2D(20, 20);
	Vector2D *aceleracion= new Vector2D (30, 30);

	PajaritoAzul *pajarito = new PajaritoAzul("twetty");
	pajarito->setTrayectoria(new Trayectoria (posicion, velocidad, aceleracion));

	string str = pajarito->aXML();
        cout << endl << str << endl;
	PajaritoAzul *pajarito2 = new PajaritoAzul();
	pajarito2->parseXML(str);

	//if(pajarito.getTrayectoria()->getPosicion()->X() != 10 && strcmp (pajarito.getRol()->Nombre().c_str(), PAJARITOAZUL) == 0)
	if (pajarito2->getTrayectoria()->getPosicion()->X() != 10 && strcmp(pajarito2->getRol()->Nombre().c_str(), PAJARITO) == 0)
		std::cout << "%TEST_FAILED% time=0 testname=test2 (newsimpletest) message=posicion inicial del pajarito rehidratado no es la esperada" << std::endl;
}

void test3() {
	std::cout << "newsimpletest test 3" << std::endl;

	// Prueba de serializacion/deserializacion de un pajarito.    
	PajaritoAzul* pajarito = new PajaritoAzul("tweety");
	pajarito->setTrayectoria(new Trayectoria(new Posicion(5, 5), new Vector2D(0, 0), new Vector2D(0, 0)));
	PajaritoAzul* pajarito2 = new PajaritoAzul();
	pajarito2->parseXML(pajarito->aXML());

	if (pajarito2->getTrayectoria()->getPosicion()->X() != 5 || pajarito2->getTrayectoria()->getPosicion()->Y() != 5)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial de tweety clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un huevo blanco.    
	HuevoBlanco* huevoBlanco = new HuevoBlanco("HuevoBlanco");
	huevoBlanco ->setTrayectoria(new Trayectoria(new Posicion(10, 10), new Vector2D(0, 0), new Vector2D(0, 0)));
	HuevoBlanco* huevoBlanco2 = new HuevoBlanco();
	huevoBlanco2->parseXML(huevoBlanco ->aXML());

	if (huevoBlanco2->getTrayectoria()->getPosicion()->X() != 10 || huevoBlanco2->getTrayectoria()->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del huevoBlanco clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un huevo codorniz.    
	HuevoCodorniz* huevoCodorniz = new HuevoCodorniz("HuevoCodorniz");
	huevoCodorniz->setTrayectoria(new Trayectoria(new Posicion(20, 20), new Vector2D(0, 0), new Vector2D(0, 0)));
	HuevoCodorniz* huevoCodorniz2 = new HuevoCodorniz();
	huevoCodorniz2->parseXML(huevoCodorniz->aXML());

	if (huevoCodorniz2->getTrayectoria()->getPosicion()->X() != 20 || huevoCodorniz2->getTrayectoria()->getPosicion()->Y() != 20)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del huevoCodorniz clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un huevo poche.    
	HuevoPoche* huevoPoche = new HuevoPoche("HuevoPoche");
	huevoPoche->setTrayectoria(new Trayectoria(new Posicion(15, 15), new Vector2D(0, 0), new Vector2D(0, 0)));
	HuevoPoche* huevoPoche2 = new HuevoPoche();
	huevoPoche2->parseXML(huevoPoche->aXML());

	if (huevoPoche2->getTrayectoria()->getPosicion()->X() != 15 || huevoPoche2->getTrayectoria()->getPosicion()->Y() != 15)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del huevoPoche clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un huevo reloj.    
	HuevoReloj* huevoReloj = new HuevoReloj("HuevoReloj", 10);
	huevoReloj->setTrayectoria(new Trayectoria(new Posicion(25, 25), new Vector2D(0, 0), new Vector2D(0, 0)));
	HuevoReloj* huevoReloj2 = new HuevoReloj();
	huevoReloj2->parseXML(huevoReloj->aXML());

	if (huevoReloj2->getTrayectoria()->getPosicion()->X() != 25 || huevoReloj2->getTrayectoria()->getPosicion()->Y() != 25)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del huevoReloj clon no es la esperada." << std::endl;

        Catapulta* catapulta = new Catapulta();
        catapulta->setPosicion(new Posicion (20, 20));
        Catapulta* catapulta2 = new Catapulta();
        catapulta2->deElementoXML(catapulta->aElementoXML());
        
        if (!(catapulta2->getPosicion()->X() == 20 && catapulta2->getPosicion()->Y() == 20))
            std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=la catapulta no esta ne la posicion esperada." << std::endl;
            
	// Prueba de serializacion/deserializacion de un cerdito.    
        Jugador* jugador = new Jugador ("Maximiliano");
        
	Cerdito* cerdito = new Cerdito();
        cerdito->setPropietario(jugador);
	cerdito->setPosicion(new Posicion(10, 10));
        
	Cerdito* cerdito2 = new Cerdito();
	cerdito2->parseXML(cerdito->aXML());
        
        cout << endl << cerdito->aXML() << endl;
        cout << endl << cerdito2->aXML() << endl;

	if (cerdito2->getPosicion()->X() != 10 || cerdito2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del cerdito clon no es la esperada." << std::endl;

	// Prueba de serializacion/deserializacion de un caja vidrio.    
	Utilidad* vidrio = new CajaVidrio;
	vidrio->setPosicion(new Posicion(10, 10));
	Utilidad* vidrio2 = new CajaVidrio;
	vidrio2->parseXML(vidrio->aXML());

	if (vidrio2->getPosicion()->X() != 10 || vidrio2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del cajavidrio clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un caja madera.    
	Utilidad* madera = new CajaMadera;
	madera->setPosicion(new Posicion(10, 10));
	Utilidad* madera2 = new CajaMadera;
	madera2->parseXML(madera->aXML());

	if (madera2->getPosicion()->X() != 10 || madera2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del cajamadera clon no es la esperada." << std::endl;

	// Prueba de serializacion/deserializacion de un caja metal.    
	Utilidad* metal = new CajaMetal;
	metal->setPosicion(new Posicion(10, 10));
	Utilidad* metal2 = new CajaMetal;
	metal2->parseXML(metal->aXML());

	if (metal2->getPosicion()->X() != 10 || metal2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del cajametal clon no es la esperada." << std::endl;

        /*
	// Prueba de serializacion/deserializacion de un catapulta.    
	Utilidad* catapulta = new Catapulta;
	catapulta->setPosicion(new Posicion(10, 10));
	Utilidad* catapulta2 = new Catapulta;
	catapulta2->parseXML(catapulta->aXML());

	if (catapulta2->getPosicion()->X() != 10 || catapulta2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del catapulta clon no es la esperada." << std::endl;
        */
        
        
	// Prueba de serializacion/deserializacion de un monticulo huevos.    
	Utilidad* monticulo = new MonticuloHuevos;
	monticulo->setPosicion(new Posicion(10, 10));
	Utilidad* monticulo2 = new MonticuloHuevos;
	monticulo2->parseXML(monticulo->aXML());

	if (monticulo2->getPosicion()->X() != 10 || monticulo2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del monticulo clon no es la esperada." << std::endl;

	// Prueba de serializacion/deserializacion de un manzana.    
	Utilidad* manzana = new Manzana;
	manzana->setPosicion(new Posicion(10, 10));
	Utilidad* manzana2 = new Manzana;
	manzana2->parseXML(manzana->aXML());

	if (manzana2->getPosicion()->X() != 10 || manzana2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del manzana clon no es la esperada." << std::endl;

	// Prueba de serializacion/deserializacion de un banana.    
	Utilidad* banana = new Banana;
	banana->setPosicion(new Posicion(10, 10));
	Utilidad* banana2 = new Banana;
	banana2->parseXML(banana->aXML());

	if (banana2->getPosicion()->X() != 10 || banana2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del banana clon no es la esperada." << std::endl;

	// Prueba de serializacion/deserializacion de un cereza.    
	Utilidad* cereza = new Cereza;
	cereza->setPosicion(new Posicion(10, 10));
	Utilidad* cereza2 = new Cereza;
	cereza2->parseXML(cereza->aXML());

	if (cereza2->getPosicion()->X() != 10 || cereza2->getPosicion()->Y() != 10)
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=posicion inicial del cereza clon no es la esperada." << std::endl;


	// Prueba de serializacion/deserializacion de un perimetro.
	Perimetro* perimetro = new Perimetro(10, 10);
	Perimetro* perimetro2 = new Perimetro();
	perimetro2->parseXML(perimetro->aXML());

	if (!(perimetro2->getAlto() == 10 && perimetro2->getAncho() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test3 (newsimpletest) message=el perimetro no posee las dimensiones o el nombre esperados." << std::endl;

	delete pajarito;
	delete pajarito2;
	delete huevoBlanco;
	delete huevoBlanco2;
	delete huevoCodorniz;
	delete huevoCodorniz2;
	delete huevoPoche;
	delete huevoPoche2;
	delete huevoReloj;
	delete huevoReloj2;
	delete cerdito;
	delete cerdito2;
	delete catapulta;
	delete catapulta2;
	delete monticulo;
	delete monticulo2;
	delete vidrio;
	delete vidrio2;
	delete madera;
	delete madera2;
	delete metal;
	delete metal2;
	delete manzana;
	delete manzana2;
	delete banana;
	delete banana2;
	delete cereza;
	delete cereza2;
	delete perimetro;
	delete perimetro2;
}

void test4() {

	std::cout << "newsimpletest test 4" << std::endl;

	Escenario* escenario = new Escenario(20, 20, "PNGFondoPath");

	// Instancio un pajarito en la posicion (10, 10).
	escenario->addActor(new PajaritoAzul("tweety"), new Posicion(10, 10), new Vector2D(0, 0), new Vector2D(0, 0));
	escenario->addUtilidad(new CajaMadera(), new Posicion(15, 15));

	Escenario* escenario2 = new Escenario();
	escenario2->parseXML(escenario->aXML());

	cout << endl << escenario->aXML() << endl;
	cout << endl << escenario2->aXML() << endl;

	if (!(escenario->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && escenario->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=Tweety no esta donde deberia estar dentro del escenario." << std::endl;

	if (!(escenario->getUtilidades()[0]->getPosicion()->X() == 15 && escenario->getUtilidades()[0]->getPosicion()->Y() == 15))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=La caja no esta donde deberia estar dentro del escenario." << std::endl;

	escenario->liberar();
	delete escenario;
        
	escenario2->liberar();
	delete escenario2;
}

void test5() {
	std::cout << "newsimpletest test 5" << std::endl;


	Escenario* escenario = new Escenario(20, 20, "PNGFondoPath");

	// Instancio un pajarito en la posicion (10, 10).
	escenario->addActor(new PajaritoAzul("tweety"), new Posicion(10, 10), new Vector2D(0, 0), new Vector2D(0, 0));
	escenario->addUtilidad(new CajaMadera(), new Posicion(15, 15));

	Escenario* escenario2 = new Escenario();
	escenario2->parseXML(escenario->aXML());

	if (!(escenario->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && escenario->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=Tweety no esta donde deberia estar dentro del escenario." << std::endl;

	if (!(escenario->getUtilidades()[0]->getPosicion()->X() == 15 && escenario->getUtilidades()[0]->getPosicion()->Y() == 15))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=La caja no esta donde deberia estar dentro del escenario." << std::endl;

	// Clono la partida mediante la funcionalidad de serializacion.
	Jugador* jugador = new Jugador("pablo");
	Partida* partida = new Partida("miPartida", escenario, jugador);

	Partida* partida2 = Partida::crearDeXML(partida->aXML());

	if (!(partida2->ArenaJuego()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && partida2->ArenaJuego()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test5 (newsimpletest) message=tweety no esta en la posicion de la arena que se esperaba." << std::endl;

	//@todo: Falta probar la serializacion/deserializacion de jugadores en la partida.
}

void test6() {

	/* Prueba de la serializacion/deserializacion de un nivel de juego.
	 */

	std::cout << "newsimpletest test 6" << std::endl;

	Nivel* nivel = new Nivel(0, 20, 20, 1000, "Mi Nivel");

	nivel->getEscenario()->addActor(new PajaritoAzul("tweety"), new Posicion(10, 10), new Vector2D(0, 0), new Vector2D(0, 0));
	nivel->getEscenario()->addUtilidad(new CajaMadera(), new Posicion(15, 15));

	if (!(nivel->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && nivel->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=Tweety no esta donde deberia estar dentro del escenario." << std::endl;

	if (!(nivel->getEscenario()->getUtilidades()[0]->getPosicion()->X() == 15 && nivel->getEscenario()->getUtilidades()[0]->getPosicion()->Y() == 15))
		std::cout << "%TEST_FAILED% time=0 testname=test4 (newsimpletest) message=La caja no esta donde deberia estar dentro del escenario." << std::endl;

	Nivel* nivel2 = new Nivel();
	nivel2->parseXML(nivel->aXML());

	if (!(nivel2->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && nivel2->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test6 (newsimpletest) message=tweety no esta en la posicion de la arena que se esperaba." << std::endl;
}

void test7() {

	std::cout << "newsimpletest test 7" << std::endl;

	Mundo* mundo = new Mundo("Tierra");
	mundo->crearNivel(0, 20, 20, 1000, "ImagenFondoPath");

	mundo->getNivel(0)->getEscenario()->addActor(new PajaritoAzul("tweety"), new Posicion(10, 10), new Vector2D(0, 0), new Vector2D(0, 0));

	mundo->getNivel(0)->getEscenario()->addUtilidad(new Cerdito, new Posicion(5, 5));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new Catapulta, new Posicion(10, 10));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new MonticuloHuevos, new Posicion(15, 15));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new CajaVidrio, new Posicion(20, 20));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new CajaMadera, new Posicion(25, 25));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new CajaMetal, new Posicion(30, 30));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new Manzana, new Posicion(35, 35));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new Banana, new Posicion(40, 40));
	mundo->getNivel(0)->getEscenario()->addUtilidad(new Cereza, new Posicion(45, 45));

	Mundo* mundo2 = new Mundo();
	mundo2->parseXML(mundo->aXML());

	if (!(mundo2->getNivel(0)->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->X() == 10 && mundo2->getNivel(0)->getEscenario()->getActorPorNombre("tweety")->getTrayectoria()->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test6 (newsimpletest) message=tweety no esta en la posicion de la arena que se esperaba." << std::endl;

	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[0]->getPosicion()->X() == 5 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[0]->getPosicion()->Y() == 5))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=cerdito no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[1]->getPosicion()->X() == 10 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[1]->getPosicion()->Y() == 10))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=catapulta no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[2]->getPosicion()->X() == 15 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[2]->getPosicion()->Y() == 15))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=monticulo no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[3]->getPosicion()->X() == 20 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[3]->getPosicion()->Y() == 20))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=vidrio no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[4]->getPosicion()->X() == 25 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[4]->getPosicion()->Y() == 25))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=madera no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[5]->getPosicion()->X() == 30 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[5]->getPosicion()->Y() == 30))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=metal no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[6]->getPosicion()->X() == 35 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[6]->getPosicion()->Y() == 35))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=manzana no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[7]->getPosicion()->X() == 40 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[7]->getPosicion()->Y() == 40))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=banana no esta en la posicion de la arena que se esperaba." << std::endl;
	if (!(mundo2->getNivel(0)->getEscenario()->getUtilidades()[8]->getPosicion()->X() == 45 && mundo2->getNivel(0)->getEscenario()->getUtilidades()[8]->getPosicion()->Y() == 45))
		std::cout << "%TEST_FAILED% time=0 testname=test7 (newsimpletest) message=cereza no esta en la posicion de la arena que se esperaba." << std::endl;

	cout << endl << mundo->aXML() << endl;
}

void test8() {
	std::cout << "newsimpletest test 8" << std::endl;

	Jugador* jugador = new Jugador("maxi");
	Jugador* jugadorClon = Jugador::crearDeXML(jugador->aXML());

	if (jugadorClon->getNombre() != "maxi")
		std::cout << "%TEST_FAILED% time=0 testname=test6 (newsimpletest) message=El jugador clon no posee el nombre que se esperaba." << std::endl;

}

void test9(){
	std::cout << "newsimpletest test 9" << std::endl;
        
        Perimetro* perimetro = new Perimetro (20, 20);
        Perimetro* perimetro2 = new Perimetro();
        perimetro2->deElementoXML(perimetro->aElementoXML());
        
        if (!(perimetro2->getAlto() == 20 && perimetro2->getAncho() == 20))
            std::cout << "%TEST_FAILED% time=0 testname=test6 (newsimpletest) message=El perimetro clon no posee las dimensiones esperadas." << std::endl;
            

}
int main(int argc, char** argv) {
	std::cout << "%SUITE_STARTING% newsimpletest" << std::endl;
	std::cout << "%SUITE_STARTED%" << std::endl;

	std::cout << "%TEST_STARTED% test1 (newsimpletest)" << std::endl;
	test1();
	std::cout << "%TEST_FINISHED% time=0 test1 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test2 (newsimpletest)\n" << std::endl;
	test2();
	std::cout << "%TEST_FINISHED% time=0 test2 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test3 (newsimpletest)\n" << std::endl;
	test3();
	std::cout << "%TEST_FINISHED% time=0 test3 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test4 (newsimpletest)\n" << std::endl;
	test4();
	std::cout << "%TEST_FINISHED% time=0 test4 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test5 (newsimpletest)\n" << std::endl;
	test5();
	std::cout << "%TEST_FINISHED% time=0 test5 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test6 (newsimpletest)\n" << std::endl;
	test6();
	std::cout << "%TEST_FINISHED% time=0 test6 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test7 (newsimpletest)\n" << std::endl;
	test7();
	std::cout << "%TEST_FINISHED% time=0 test7 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test8 (newsimpletest)\n" << std::endl;
	test8();
	std::cout << "%TEST_FINISHED% time=0 test8 (newsimpletest)" << std::endl;

	std::cout << "%TEST_STARTED% test9 (newsimpletest)\n" << std::endl;
	test9();
	std::cout << "%TEST_FINISHED% time=0 test9 (newsimpletest)" << std::endl;

	std::cout << "%SUITE_FINISHED% time=0" << std::endl;

	return (EXIT_SUCCESS);
}

